ExportGridIntegerToESRI_BINARY Subroutine

private subroutine ExportGridIntegerToESRI_BINARY(layer, fileName)

Uses

export grid_integer to a ESRI BINARY file.

Arguments

Type IntentOptional Attributes Name
type(grid_integer), intent(in) :: layer
character(len=*), intent(in) :: fileName

Variables

Type Visibility Attributes Name Initial
integer(kind=short), public :: fileUnit
integer(kind=short), public :: i
integer(kind=short), public :: ios
integer(kind=short), public :: j
integer(kind=short), public :: recordLength
integer(kind=short), public :: recordNumber

Source Code

SUBROUTINE ExportGridIntegerToESRI_BINARY &
!
(layer, fileName) 

USE Utilities, ONLY: &
!Imported routines:
GetUnit

IMPLICIT NONE

!Arguments with intent(in):
TYPE (grid_integer), INTENT (IN) :: layer
CHARACTER (LEN = *), INTENT (IN) :: fileName

!Local variables:
INTEGER (KIND = short)          :: fileUnit
INTEGER (KIND = short)          :: ios
INTEGER (KIND = short)          :: recordLength 
INTEGER (KIND = short)          :: recordNumber
INTEGER (KIND = short)          :: i,j
!------------end of declaration------------------------------------------------

!open file
fileUnit = GetUnit ()

OPEN (UNIT = fileUnit, file = TRIM(fileName) // '.hdr', IOSTAT = ios)
IF (ios /= 0) THEN
  CALL Catch ('error', 'GridLib',        &
              'error opening file: ',    &
              code = openFileError, argument = TRIM(fileName) // '.hdr' )
END IF

!write header
WRITE(fileUnit,'(a14,i4)')    "ncols         ", layer % jdim
WRITE(fileUnit,'(a14,i4)')    "nrows         ", layer % idim
WRITE(fileUnit,'(a14,f15.5)') "xllcorner     ", layer % xllcorner
WRITE(fileUnit,'(a14,f15.5)') "yllcorner     ", layer % yllcorner
WRITE(fileUnit,'(a14,f15.5)') "cellsize      ", layer % cellsize
WRITE(fileUnit,'(a14,i8)') "NODATA_value  ", layer % nodata
WRITE(fileUnit,'(a18)')       "BYTEORDER LSBFIRST"
CLOSE (fileUnit)

!write data
fileUnit = GetUnit ()
INQUIRE (IOLENGTH = recordLength) 100_long
OPEN (UNIT = fileUnit, file = TRIM(fileName) // '.flt', &
      FORM = 'UNFORMATTED', ACCESS = 'DIRECT', RECL = recordLength, &
      IOSTAT = ios)
IF (ios /= 0) THEN
  CALL Catch ('error', 'GridLib',        &
              'error opening file: ',    &
              code = openFileError, argument = TRIM(fileName) // '.flt' )
END IF

recordNumber = 0
DO i = 1,layer % idim
  DO j = 1, layer % jdim
    recordNumber = recordNumber + 1
    WRITE (fileUnit,REC = recordNumber) layer % mat (i,j)
  END DO
END DO

CLOSE (fileUnit)

END SUBROUTINE ExportGridIntegerToESRI_BINARY